﻿/////////////////////////////////////////////////////////////////////////
//                                                                     //
//    MTGProject - A Magic The Gathering Networked Environment         //
//                                                                     //
//      Copyright (c) 2008-2009 by The MTGProject Team (CSC230)        //
//                                                                     //
// This file is part of MTGProject.                                    //
//                                                                     //
// MTGProject is free software; you can redistribute it and/or         //
// modify it under the terms of the GNU Lesser General Public          //
// License as published by the Free Software Foundation; either        //
// version 3 of the License, or (at your option) any later version.    //
//                                                                     //
// This library is distributed in the hope that it will be useful,     //
// but WITHOUT ANY WARRANTY; without even the implied warranty of      //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       //
// GNU Lesser General Public License for more details.                 //
//                                                                     //
// You should have received a copy of the GNU Lesser General Public    //
// License along with this library; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA           //
// 02111-1307, USA, or contact the author(s):                          //
//                                                                     //
// Ruben Acuna <flyingfowlsoftware@earthlink.net>                      //
//                                                                     //
/////////////////////////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.Text;

namespace MTGProject
{
    public interface ICard
    {
        #region properties

        LinkedList<ManaColor> Cost
        {
            get;
            set;
        }

        LinkedList<ManaColor> Colors
        {
            get;
            set;
        }

        string Name
        {
            get;
            set;
        }

        string Script
        {
            get;
            set;
        }

        string ImageURL
        {
            get;
            set;
        }

        ICard Parent
        {
            get;
            set;
        }

        #endregion

        #region methods

        void StartScript(PlayerController controller);

        #endregion

        #region scripting hooks

        /// <summary>
        /// This scripting hook will be called once the card is placed into play.
        /// </summary>   
        void OnResolve();

        /// <summary>
        /// This scripting hook will be called after the cost for the card has been paid.
        /// </summary>
        void OnPayCost();

        #endregion
    }
}
